// <copyright file="GeneratorData.cs" company="TenneySoftware">
// Copyright (c) 2009 All Right Reserved
// </copyright>
// <author>Robert Tenney</author>
// <email>rob10e@yahoo.com</email>
// <date>April 2009</date>
// <summary>The GeneratorData class handles passing unique property and method information from the level generators to the engine.</summary>

// License:

// Product: RPGRoguelikeEngine .Net
// Author: Robert N. Tenney
// Copyright: April 2009

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation version 2
// of the License.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

// This license covers all source code, binaries, and other materials related to this project
// unless specifically stated otherwise.

using System;

namespace TenneySoftware.LevelGenerator {
    /// <summary>
    /// The GeneratorData class handles passing unique property and method information from the level generators to the engine.
    /// </summary>
    public class GeneratorData {
        /// <summary>
        /// The data's index.
        /// </summary>
        private int index;

        /// <summary>
        /// The data's name.
        /// </summary>
        private string name;

        /// <summary>
        /// The data's description.
        /// </summary>
        private string description;

        /// <summary>
        /// The data's parameters.
        /// </summary>
        private string[] parameters;

        /// <summary>
        /// Initializes a new instance of the GeneratorData class.
        /// </summary>
        public GeneratorData() {
        }

        /// <summary>
        /// Initializes a new instance of the GeneratorData class.
        /// </summary>
        /// <param name="index">Index number for type of data.</param>
        /// <param name="name">Name of data.</param>
        /// <param name="description">Description of data.</param>
        /// <param name="parameters">Parameters that are passed to the data type.</param>
        public GeneratorData(int index, string name, string description, string[] parameters) {
            this.index = index;
            this.name = name;
            this.description = description;
            this.parameters = parameters;
        }

        /// <summary>
        /// Initializes a new instance of the GeneratorData class.
        /// </summary>
        /// <param name="index">Index number for type of data.</param>
        /// <param name="name">Name of data.</param>
        /// <param name="description">Description of data.</param>
        public GeneratorData(int index, string name, string description) :
        this(index, name, description, null) {
        }

        /// <summary>
        /// Gets or sets the decription of the data.
        /// </summary>
        /// <value>
        /// The decription of the data.
        /// </value>
        public string Description {
            get {
                return this.description;
            }

            set {
                this.description = value;
            }
        }

        /// <summary>
        /// Gets or sets the name of the data.
        /// </summary>
        /// <value>
        /// The name of the data.
        /// </value>
        public string Name {
            get {
                return this.name;
            }
            
            set {
                this.name = value;
            }
        }

        /// <summary>
        /// Gets or sets the index of the data.
        /// </summary>
        /// <value>
        /// The index of the data.
        /// </value>
        public int Index {
            get {
                return this.index;
            }

            set {
                this.index = value;
            }
        }

        /// <summary>
        /// Gets the parameters that are passed to the level generator.
        /// </summary>
        /// <returns>
        /// The parameters that are passed to the level generator.
        /// </returns>
        public string[] GetParameters() {
            return this.parameters;
        }

        /// <summary>
        /// Sets the parameters that are passed to the level generator.
        /// </summary>
        /// <param name="parameters">The parameters that are passed to the level generator.</param>
        public void SetParamaters(string[] parameters) {
            this.parameters = parameters;
        }
    }
}
